/*
 * @Author: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
 * @Date: 2023-12-05 14:16:25
 * @LastEditors: error: error: git config user.name & please set dead value or install git && error: git config user.email & please set dead value or install git & please set dead value or install git
 * @LastEditTime: 2023-12-05 14:16:59
 * @FilePath: \every-little-progress\day 379\test.cc
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE
 */


// 2224. 转化时间需要的最少操作数
// https://leetcode.cn/problems/minimum-number-of-operations-to-convert-time/description/
// 给你两个字符串 current 和 correct ，表示两个 24 小时制时间 。

// 24 小时制时间 按 "HH:MM" 进行格式化，其中 HH 在 00 和 23 之间，而 MM 在 00 和 59 之间。最早的 24 小时制时间为 00:00 ，最晚的是 23:59 。

// 在一步操作中，你可以将 current 这个时间增加 1、5、15 或 60 分钟。你可以执行这一操作 任意 次数。

// 返回将 current 转化为 correct 需要的 最少操作数 。

 

// 示例 1：

// 输入：current = "02:30", correct = "04:35"
// 输出：3
// 解释：
// 可以按下述 3 步操作将 current 转换为 correct ：
// - 为 current 加 60 分钟，current 变为 "03:30" 。
// - 为 current 加 60 分钟，current 变为 "04:30" 。 
// - 为 current 加 5 分钟，current 变为 "04:35" 。
// 可以证明，无法用少于 3 步操作将 current 转化为 correct 。
// 示例 2：

// 输入：current = "11:00", correct = "11:01"
// 输出：1
// 解释：只需要为 current 加一分钟，所以最小操作数是 1 。
 

// 提示：

// current 和 correct 都符合 "HH:MM" 格式
// current <= correct

class Solution {
    int step(int dt)
    {
        int cnt = (dt / 15);
        dt %= 15;
        cnt += (dt / 5);
        dt %= 5;
        cnt += dt;

        return cnt;
    }
public:
    int convertTime(string current, string correct) {
        int dh = stoi(string(correct.begin(), correct.begin() + 2)) - stoi(string(current.begin(), current.begin() + 2));
        int t1 = stoi(string(correct.begin() + 3, correct.end()));
        int t2 = stoi(string(current.begin() + 3, current.end()));

        int cnt = dh;
        if(t1 >= t2)
            cnt += step(t1 - t2);
        else
           cnt += step(t1 + 60 - t2) - 1;

        return cnt;
    }
};